package com.ruoyi.business.domain.wecom;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 微信回调消息信息表
 * </p>
 *
 * @author
 * @since 2023-XX-XX
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_wecom_callback_msg_info")
public class TbWecomCallbackMsgInfo extends BaseEntity {


    private static final long serialVersionUID = 1L;

    /**
     * 客户进群退群流水记录id
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 消息创建时间
     */
    @TableField("msg_create_time")
    private Long msgCreateTime;

    /**
     * 应用id
     */
    @TableField("agent_id")
    private String agentId;

    /**
     * 此事件该值固定为sys，表示该消息由系统生成
     */
    @TableField("from_user_name")
    private String fromUserName;

    /**
     * 企业微信CorpID
     */
    @TableField("to_user_name")
    private String toUserName;

    /**
     * 类型
     */
    @TableField("change_type")
    private String changeType;

    /**
     * 消息的类型，此时固定为event
     */
    @TableField("msg_type")
    private String msgType;


    /**
     * 事件类型
     */
    @TableField("event")
    private String event;


    /**
     * 外部联系人的userid，注意不是企业成员的账号
     */
    @TableField("external_user_id")
    private String externalUserId;

    /**
     * 添加此用户的「联系我」方式配置的state参数，或在获客链接中指定的customer_channel参数，可用于识别添加此用户的渠道
     */
    @TableField("state")
    private String state;

    /**
     * 欢迎语code，可用于发送欢迎语
     */
    @TableField("welcome_code")
    private String welcomeCode;

    /**
     * 删除客户的操作来源，DELETE_BY_TRANSFER表示此客户是因在职继承自动被转接成员删除
     */
    @TableField("source")
    private String source;

    /**
     * 接替失败的原因, customer_refused-客户拒绝， customer_limit_exceed-接替成员的客户数达到上限
     */
    @TableField("fail_reason")
    private String failReason;


    /**
     * 标签ID
     */
    @TableField("tag_id")
    private String tagId;

    /**
     * 签组的ID
     */
    @TableField("tag_group_id")
    private String tagGroupId;

    /**
     * 创建标签时，此项为tag，创建标签组时，此项为tag_group
     */
    @TableField("tag_type")
    private String tagType;

    /**
     * 标签或标签组所属的规则组id，只回调给"客户联系"应用
     */
    @TableField("tag_strategy_id")
    private String tagStrategyId;

    /**
     * 成员变更类型
     */
    @TableField("update_type")
    private String updateType;

    /**
     * 变更详情
     */
    @TableField("update_detail")
    private String updateDetail;

    /**
     * 客户群id
     */
    @TableField("chat_id")
    private String chatId;

    /**
     * 客户id
     */
    @TableField("user_id")
    private String userId;

    /**
     * 当是成员入群时有值。表示成员的入群方式
     * 0 - 由成员邀请入群（包括直接邀请入群和通过邀请链接入群）
     * 3 - 通过扫描群二维码入群
     */
    @TableField("join_scene")
    private String joinScene;

    /**
     * 当是成员退群时有值。表示成员的退群方式
     * 0 - 自己退群
     * 1 - 群主/群管理员移出
     */
    @TableField("quit_scene")
    private String quitScene;

    /**
     * 当是成员入群或退群时有值。表示成员变更数量
     */
    @TableField("men_change_cnt")
    private Integer menChangeCnt;

    /**
     * 当是成员入群或退群时有值。变更前的群成员版本号
     */
    @TableField("last_mem_ver")
    private String lastMemVer;

    /**
     * 当是成员入群或退群时有值。变更后的群成员版本号
     */
    @TableField("cur_mem_ver")
    private String curMemVer;

    /**
     * 解密后的完整消息
     */
    @TableField("full_msg")
    private String fullMsg;


}
